package interfaz;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Time;
import java.util.Calendar;
import java.util.Date;
import java.util.Hashtable;
import java.util.List;
import java.util.Random;

import javax.naming.InitialContext;
import javax.swing.*;
import java.awt.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.Spring;
import javax.swing.SpringLayout;

import beans.AdministradorClientes;
import beans.AdministradorCotizaciones;
import beans.Facade;
import entidades.*;

public class InterfazGraficaODVAgregarCliente {
	
	public JList listaClientes;
	public DefaultListModel modelolista;
	public JButton btnAgregar;
	public JFrame jfFrame;
	public JPanel jpPanel;

	// Labels para el Formulario
	
	public JLabel jlNombreCliente;
	public JLabel jlTipoCliente;
	public JLabel jlCuentaCorriente;
	public JLabel jlEmail;
	public JLabel jlCondVenta;
	public JLabel jlCondIngBrutos;
	
	// Area de Texto para ingresar los datos
	
	public JTextField jtNombreCliente;
	public JTextField jtTipoCliente;
	public JTextField jtCuentaCorriente;
	public JTextField jtEmail;
	public JTextField jtCondVenta;
	public JTextField jtCondIngBrutos;
	public String [] etiquetas = 
	{"Nombre del Cliente", "Tipo de Cliente", "Nro. Cuenta Corriente", "Saldo Cuenta Corriente", "Email", "Cond. de Venta", "Cond. Ing. Brutos"};
	
	public JList jlClienteExistentes;
		
	public InterfazGraficaODVAgregarCliente(){
		
		inicializar();	
	}
	
	
	public void inicializar(){
	
		jfFrame = new JFrame();
		jpPanel = new JPanel();
		
		// Caracteristicas del Frame
		jfFrame.setTitle("Interfaz OPERADOR ODV - AGREGAR CLIENTE");
		jfFrame.setSize(640, 520);
		jfFrame.getContentPane().add(jpPanel);
		jpPanel.setLayout(null);
		jpPanel.setSize(640, 520);
		jfFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
		
		
		/*********************************************
		 * 
		 * Labels y Cajas de Texto
		 * 
		 *********************************************/	
		jlNombreCliente = new JLabel(etiquetas[0], JLabel.TRAILING);
		jlTipoCliente = new JLabel(etiquetas[1], JLabel.TRAILING);
		jlCuentaCorriente = new JLabel(etiquetas[2], JLabel.TRAILING);
		jlEmail = new JLabel(etiquetas[4], JLabel.TRAILING);
		jlCondVenta = new JLabel(etiquetas[5], JLabel.TRAILING);
		jlCondIngBrutos = new JLabel(etiquetas[6], JLabel.TRAILING);
		
		jtNombreCliente = new JTextField();
		jtTipoCliente = new JTextField();
		jtCuentaCorriente = new JTextField();
		jtEmail = new JTextField();
		jtCondVenta = new JTextField();
		jtCondIngBrutos = new JTextField();
		
		// Posicionamiento de los componentes
		jlNombreCliente.setBounds(10, 30, 140, 30);
	    jtNombreCliente.setBounds(160, 30, 140, 30);
	    jlTipoCliente.setBounds(10, 70, 140, 30);
	    jtTipoCliente.setBounds(160, 70, 140, 30);
	    jlCuentaCorriente.setBounds(10, 110, 140, 30);
	    jtCuentaCorriente.setBounds(160, 110, 140, 30);
	    jlEmail.setBounds(10, 150, 140, 30);
	    jtEmail.setBounds(160, 150, 140, 30);
	    jlCondVenta.setBounds(10, 230, 140, 30);
	    jtCondVenta.setBounds(160, 230, 140, 30);
	    jlCondIngBrutos.setBounds(10, 270, 140, 30);
	    jtCondIngBrutos.setBounds(160, 270, 140, 30);
	    
	    
	    btnAgregar = new JButton("Agregar Cliente");
		btnAgregar.setBounds(40,350,200,40);
			
		
		/*****************************************************
		 * 
		 * Se conecta con el Bean AdministradorClienteBean
		 * y persiste el cliente con los datos del formulario.
		 */
		btnAgregar.addActionListener(new ActionListener() {
	    	 
            public void actionPerformed(ActionEvent e)
            {
            	
            	Cliente cli = new Cliente();
            	
            	cli.setNombreCliente(jtNombreCliente.getText());
            	cli.setTipoCliente(jtTipoCliente.getText());
            	cli.setEmail(jtEmail.getText());
            	// Nro de cuenta, instancio clase cuenta corriente.
            	cli.setCuentaCorriente(new CuentaCorriente());
            	cli.getCuentaCorriente().setNrocuenta(Integer.valueOf(jtCuentaCorriente.getText()));
                cli.setCondVenta(jtCondVenta.getText());
            	cli.setCondIngBrutos(jtCondIngBrutos.getText());
            	cli.getCuentaCorriente().setCliente(cli);
            	
            	
            	// Llamar al Bean de Administracion Clientes. 
            	try {
	               Hashtable props = new Hashtable();
	         	   props.put(InitialContext.INITIAL_CONTEXT_FACTORY,"org.jnp.interfaces.NamingContextFactory");
	         	   props.put(InitialContext.PROVIDER_URL,"jnp://127.0.0.1:1099");
	         	   InitialContext context = new InitialContext(props);
	         	   Facade fachada = (Facade) context.lookup("EJBSistemaODVEAR/FacadeBean/remote");
              
	         	   
	         	   // Llama al metodo en el AdministradorClientesBean
	         	   fachada.crearCliente(cli);
	         	   
	         	  
            	} catch (Exception e1){
            		e1.printStackTrace();
            	}
                
            }
        });   
		
		
		// Agregar al Panel los labels
		jpPanel.add(jlNombreCliente);
		jpPanel.add(jlTipoCliente);
		jpPanel.add(jlCuentaCorriente);
		jpPanel.add(jlEmail);
		jpPanel.add(jlCondVenta);
		jpPanel.add(jlCondIngBrutos);
		
		// los TextField
		jpPanel.add(jtNombreCliente);
		jpPanel.add(jtTipoCliente);
		jpPanel.add(jtCuentaCorriente);
		jpPanel.add(jtEmail);
		jpPanel.add(jtCondVenta);
		jpPanel.add(jtCondIngBrutos);
		
		// El boton
		jpPanel.add(btnAgregar);
		
		// La lista de clientes
		
		JLabel lblClientesConocidos = new JLabel("Clientes Existentes");
		lblClientesConocidos.setBounds(330, 10, 220, 30);
		
		DefaultListModel modeloLista = new DefaultListModel();
		jlClienteExistentes = new JList();
		jlClienteExistentes.setBounds(330, 50, 220, 400);
		// listaClientes.setModel(modeloLista);
		
		jpPanel.add(lblClientesConocidos);
		jpPanel.add(jlClienteExistentes);
		
		jfFrame.setVisible(true);
		

		
		
		
	
	
	/************************************
	 * 
	 * Objeto CLIENTE completo para la 
	 * creacion del cliente.
	 * 
	 */
	// cli = new Cliente();
	// cli.Nombre = jtNombre.ToString();
	// ..
	// ..
	// ..
	// ..
	// Llamar a 
	// AdministradorClientesBean.AgregarCliente(Cliente cli);
	
		
	/*
	btnAgregar.addActionListener(new ActionListener() {
   	 
        public void actionPerformed(ActionEvent e)
        {
        	// Crea un nuevo frame con la interfaz de compra
            new InterfazGraficaODVSolicitarCotizacion();
        }
    });
	
	*/
	}
}

